home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / thesource-7.lha / Source / DefFunc.lha / DefFunc / demo.c < prev    next >
C/C++ Source or Header  |  1993-12-14  |  1KB  |  58 lines

  1. /*********************************************************
  2.  *
  3.  *    example program of useing defunc (Ke Jin 1993)
  4.  *
  5.  *********************************************************/
  6. #include <stdio.h>
  7. #include <math.h>
  8. #include <defunc.h>
  9.  
  10. int main()
  11. {
  12.     double (*fp)();
  13.     char expr[128];
  14.     double x;
  15.  
  16.     matha2z(); /* portable functions in  math lib into token table */
  17.  
  18.     printf("\n\tEnter a expression please.\n");
  19.  
  20.     for(;;)
  21.     {
  22.        printf("\n\tinput > ");
  23.        fgets(expr, 127, stdin);
  24.        expr[strlen(expr)-1]='\0';   /* strip off the '\n' on end */
  25.  
  26.        if(strncmp(expr, "quit", 4)==0||
  27.       strncmp(expr, "exit", 4)==0)
  28.        {
  29.            printf("\n\t\t--------- Bye! ---------\n\n");
  30.        return 0;
  31.        }
  32.  
  33.        fp = dfopen(expr);
  34.        if(fp==0) {
  35.        if(exparserror!=0) 
  36.           printf("\t\t%s\n", exparserror);
  37.            else
  38.           printf("\t\tempty expression body\n");
  39.        exparserror = 0;
  40.  
  41.            printf("\n\t\tcurrent arguments are %s, %s\n",
  42.                getarguname(1), getarguname(2));
  43.  
  44.        continue;
  45.        }
  46.  
  47.        printf("\t\t%s\t\t%s\n", getarguname(1), expr);
  48.        for(x=0.0;x<1.0;x=x+0.1)
  49.        {
  50.        printf("\t\t%f\t%f\n", x, fp(x,0));
  51.        }
  52.        printf("\n\t\tcurrent arguments are %s, %s\n", 
  53.            getarguname(1), getarguname(2));
  54.  
  55.        dfclose(fp);
  56.     }
  57. }
  58.